/// *
// * @Copyright: 2016 www.yyfax.com Inc. All rights reserved.
// */
// package com.yyfax.pay.order.controller.api;
//
// import org.slf4j.Logger;
// import org.slf4j.LoggerFactory;
// import org.springframework.beans.BeanUtils;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.web.bind.annotation.RequestMapping;
// import org.springframework.web.bind.annotation.RequestMethod;
// import org.springframework.web.bind.annotation.RestController;
//
// import com.yyfax.commons.lang.DateUtil;
// import com.yyfax.framework.model.YYFaxRsp;
// import com.yyfax.pay.common.constants.PayConstants;
// import com.yyfax.pay.common.enums.AuthStateEnum;
// import com.yyfax.pay.common.enums.PayRspCodeEnum;
// import com.yyfax.pay.order.data.service.AuthOrderService;
// import com.yyfax.pay.order.model.po.AuthOrderPO;
// import com.yyfax.pay.order.model.to.AuthCounterSignParams;
// import com.yyfax.pay.order.model.to.AuthOrderReturnContent;
// import com.yyfax.pay.order.model.to.AuthOrderReturnContent.AuthOrderReturnData;
// import com.yyfax.pay.order.model.to.VerifyCodeContent;
// import com.yyfax.pay.order.service.AuthService;
// import com.yyfax.pay.third.model.to.yyfax.AuthenticationYYContent;
// import com.yyfax.pay.third.model.to.yyfax.SendAuthenticationVerifyCodeYYContent;
//
/// **
// * 独立鉴权入口
// *
// * @author buyi
// * @date 2017-04-18 14:32:51
// * @since v1.0.0
// */
// @RestController
// public class AuthApiController {
// private Logger logger = LoggerFactory.getLogger(getClass());
//
// // @Autowired
// // private MerchantConfigService merchantConfigService;
//
// @Autowired
// private AuthOrderService authOrderService;
//
// @Autowired
// private AuthService authService;
//
// @Autowired
// private PayConstants payConstants;
//
// /**
// * 发送鉴权短信验证码
// *
// * @author buyi
// * @date 2017-04-13 21:45:43
// * @since v1.0.0
// * @param merchantCode
// * @param cardNo
// * @return
// * @throws Throwable
// */
// @RequestMapping(method = RequestMethod.POST, path = "/api/auth/send_verify")
// public YYFaxRsp<VerifyCodeContent> sendVerifyCode(AuthCounterSignParams params) throws Throwable {
// logger.debug("enter auth send verifyCode");
//
// // 1.参数校验
// params.validate();
//
// // 2.验签
// params.checkSign(payConstants.getSignKey());
//
// // 获取订单信息
// AuthOrderPO authOrderPO = authOrderService.queryByOrderIdAndMerchantCode(params.getOrderId(),
// params.getMerchantCode());
// if (authOrderPO == null) {
// return new YYFaxRsp<VerifyCodeContent>(PayRspCodeEnum.COMMON_ERROR_BAD_REQUEST, "订单不存在");
// }
//
// //
// // ThirdPayService adapterPayService =
// // adapterService.adapterPayService(PaymentEnum.fromValue(params.getPaymentCode()));
// //
// // String idNo = StringUtils.isBlank(authOrderPO.getIdNoCip()) ?
// // params.getIdNo() : CryptUtil.decrypt(authOrderPO.getIdNoCip());
// // String name = StringUtils.isBlank(authOrderPO.getName()) ?
// // params.getName() : authOrderPO.getName();
// // String cardNo = StringUtils.isBlank(authOrderPO.getCardNoCip()) ?
// // params.getCardNo() : CryptUtil.decrypt(authOrderPO.getCardNoCip());
// //
// // // 封装发送验证码实体
// // SendAuthenticationVerifyCodeYYParams sendVerifyCodeParams = new
// // SendAuthenticationVerifyCodeYYParams();
// // BeanUtils.copyProperties(authOrderPO, sendVerifyCodeParams);
// // sendVerifyCodeParams.setIdNo(idNo);
// // sendVerifyCodeParams.setName(name);
// // sendVerifyCodeParams.setCardNo(cardNo);
// // sendVerifyCodeParams.setPhone(params.getPhone());
// //
// // SendAuthenticationVerifyCodeYYContent sendVerifyCodeYYContent =
// // adapterPayService.sendAuthenticationVerifyCode(sendVerifyCodeParams);
// //
// // if (sendVerifyCodeYYContent == null) {
// // return new
// // YYFaxRsp<VerifyCodeContent>(PayRspCodeEnum.COMMON_ERROR_FORMAT_EXCEPTION,
// // "请求验证码为空", "请求验证码为空");
// // }
//
// SendAuthenticationVerifyCodeYYContent sendVerifyCodeYYContent = authService.sendVerifyCode(authOrderPO,
// params.getIdNo(), params.getName(), params.getCardNo(), params.getPhone());
//
// VerifyCodeContent content = new VerifyCodeContent(sendVerifyCodeYYContent.getToken(), null);
//
// return new YYFaxRsp<VerifyCodeContent>(sendVerifyCodeYYContent.getResultCode(),
// sendVerifyCodeYYContent.getResultMsg(), sendVerifyCodeYYContent.getResultMsg(), content);
// }
//
// /**
// * 独立鉴权提交
// *
// * @author buyi
// * @date 2017-04-18 09:04:14
// * @since v1.0.0
// * @param sign
// * @param params
// * @return
// * @throws Throwable
// */
// @RequestMapping(method = RequestMethod.POST, path = "/api/auth/confirm")
// public YYFaxRsp<AuthOrderReturnContent> authConfirm(AuthCounterSignParams params) throws Throwable {
//
// // 1.参数校验
// params.validate();
//
// // 2.验签
// params.checkSign(payConstants.getSignKey());
//
// // 获取订单信息
// AuthOrderPO authOrderPO = authOrderService.queryByOrderIdAndMerchantCode(params.getOrderId(),
// params.getMerchantCode());
// if (authOrderPO == null || !AuthStateEnum.DEALING.isValue(authOrderPO.getState())) {
// return new YYFaxRsp<AuthOrderReturnContent>(PayRspCodeEnum.COMMON_ERROR_BAD_REQUEST, "订单不存在/过期");
// }
//
// // 判断订单是否过期
// if (DateUtil.str2DateTime(authOrderPO.getExpireTime()).getTime() <= System.currentTimeMillis()) {
// return new YYFaxRsp<AuthOrderReturnContent>(PayRspCodeEnum.COMMON_ERROR_BAD_REQUEST, "订单不存在/过期");
// }
//
// AuthenticationYYContent authenticationYYContent = authService.authentication(authOrderPO, params);
//
// // 封装回显信息
// AuthOrderReturnContent content = transformAuthOrderReturnContent(authOrderPO, authenticationYYContent);
//
// return new YYFaxRsp<AuthOrderReturnContent>(PayRspCodeEnum.SUCCESS, content);
// }
//
// private AuthOrderReturnContent transformAuthOrderReturnContent(AuthOrderPO authOrderPO,
// AuthenticationYYContent authenticationYYContent) {
// AuthOrderReturnContent content = new AuthOrderReturnContent();
// content.setUrl(authOrderPO.getReturnUrl());
//
// AuthOrderReturnData data = new AuthOrderReturnData();
// BeanUtils.copyProperties(authOrderPO, data);
// data.setResultCode(authenticationYYContent.getResultCode());
// data.setResultMsg(authenticationYYContent.getResultMsg());
//
// content.setData(data);
// return content;
// }
// }
